package zhu.yu.OOP_abstract_class.多态;

/*
如何才能知道一个父类引用的对象，本来是什么子类？
格式
对象 instanceof 类型
这将会得到一个boolean值结果，也就是判断前面的对象能不能当做后面类型的实例
 */
public class DemoInstanceof {
    public static void main(String[] args) {
        Fu fu = new Zi();  // 子类1
        fu.method();  // 子类方法

        // 判断一下父类引用 fu 本来是不是 Zi
        if (fu instanceof Zi) {
            Zi zi = (Zi) fu;
            zi.methodZi();  // 子类1独有方法
        }
        // 判断一下父类引用 fu 本来是不是 Zi2
        if (fu instanceof Zi2) {
            Zi2 zi2 = (Zi2) fu;
            zi2.methodZi();
        }

        giveMeAPet(new Zi());
    }

    public static void giveMeAPet(Fu fu) {

        if (fu instanceof Zi) {
            Zi zi = (Zi) fu;
            zi.methodZi();
        }

        if (fu instanceof Zi2) {
            Zi2 zi2 = (Zi2) fu;
            zi2.methodZi();
        }
    }
}
